package com.wuyou.sso.common.enums;

import cn.hutool.core.util.EnumUtil;
import com.baomidou.mybatisplus.annotation.IEnum;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.wuyou.sso.common.annotation.DictValue;
import com.wuyou.sso.common.annotation.Label;
import com.wuyou.sso.common.annotation.MapDict;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 报文类型
 *
 * @author zhengzhouyi
 * @date 2022-11-10
 */
@RequiredArgsConstructor
@MapDict(code = "message-type",name = "报文类型")
public enum MessageTypeEnum implements IEnum<String> {
    /**
     * 库位备案
     */
    @Label("库位备案")
    KWBA("KWBA", "库位备案"),
    /**
     * 集拼拼箱
     */
    @Label("集拼配箱")
    JPPX("JPPX", "集拼配箱"),
    /**
     * 集拼入库
     */
    @Label("集拼入库")
    JPRK("JPRK", "集拼入库"),
    /**
     * 集拼运抵
     */
    @Label("集拼运抵")
    JPYD("JPYD", "集拼运抵"),
    /**
     * 集拼移库
     */
    @Label("集拼移库")
    JPYK("JPYK", "集拼移库"),
    /**
     * 集拼拆托
     */
    @Label("集拼拆托")
    JPCT("JPCT", "集拼拆托"),
    /**
     * 集拼装箱
     */
    @Label("集拼装箱")
    JPZX("JPZX", "集拼装箱"),
    /**
     * 拆箱提货
     */
    @Label("拆箱提货")
    CXTH("CXTH", "拆箱提货"),
    /**
     * 转场
     */
    @Label("转场")
    XCUSTTRPT("XCUSTTRPT", "转场"),
    /**
     * 集拼落货
     */
    @Label("集拼落货")
    JPLH("JPLH", "集拼落货"),
    /**
     * 集拼退关
     */
    @Label("集拼退关")
    JPTG("JPTG", "集拼退关"),
    /**
     * 进区表头
     */
    @Label("进区表头")
    JQHEAD("JQHEAD", "进区表头"),
    /**
     * 进区表体
     */
    @Label("进区表体")
    JQBODY("JQBODY", "进区表体"),
    /**
     * 出区表头表体
     */
    @Label("出区表头表体")
    CQBTBT("CQBTBT", "出区表头表体"),
    /**
     * 预约记录接口
     */
    @Label("梅山预约记录")
    MSYYJL("MSYYJL", "梅山预约记录"),
    /**
     * 梅山出库单
     */
    @Label("梅山出仓单")
    MSCCD("MSCCD","梅山出仓单"),
    /**
     * 梅山入仓单
     */
    @Label("梅山进仓单")
    MSRCD("MSRCD","梅山进仓单"),
    /**
     * 梅山出门单
     */
    @Label("梅山出门单")
    MSCMD("MSCMD","梅山出门单"),
    /**
     * 梅山库存变化单
     */
    @Label("梅山库存变化单")
    MSBHD("MSBHD","梅山库存变化单"),
    /**
     * 梅山进出仓单修改记录
     */
    @Label("梅山进出仓单修改记录")
    MSJLD("MSJLD","梅山进出仓单修改记录");
    /**
     * 类型
     */
    @DictValue
    private final String type;

    /**
     * 描述
     */
    @JsonValue
    @Getter
    private final String description;

    @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
    public static MessageTypeEnum getEnum(Object value) {
        return EnumUtil.likeValueOf(MessageTypeEnum.class, value);
    }

    @Override
    public String getValue() {
        return this.type;
    }

}
